]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Ensure the currently focused icon is viewable
authorRui Matos <tiagomatos@gmail.com>
Thu, 20 Mar 2014 13:54:04 +0000 (14:54 +0100)
committerRui Matos <tiagomatos@gmail.com>
Wed, 26 Mar 2014 10:42:34 +0000 (11:42 +0100)
We either scroll or paginate to the correct place when an icon gets
key focus.

https://bugzilla.gnome.org/show_bug.cgi?id=726759

js/ui/appDisplay.js

index 2d8fc38f336596f6a33759c1128993e199ec3d60..90fac8777931a8f3c6051231038a12cfd8936ec6 100644 (file)
@@ -99,6 +99,9 @@ const BaseAppView = new Lang.Class({
         else
             this._grid = new IconGrid.IconGrid(gridParams);
 
+        this._grid.connect('key-focus-in', Lang.bind(this, function(grid, actor) {
+            this._keyFocusIn(actor);
+        }));
         // Standard hack for ClutterBinLayout
         this._grid.actor.x_expand = true;
 
@@ -106,6 +109,10 @@ const BaseAppView = new Lang.Class({
         this._allItems = [];
     },
 
+    _keyFocusIn: function(actor) {
+        // Nothing by default
+    },
+
     removeAll: function() {
         this._grid.destroyAll();
         this._items = {};
@@ -558,7 +565,7 @@ const AllView = new Lang.Class({
             }));
     },
 
-    _ensureIconVisible: function(icon) {
+    _keyFocusIn: function(icon) {
         let itemPage = this._grid.getItemPage(icon);
         this.goToPage(itemPage);
     },
@@ -929,6 +936,10 @@ const FolderView = new Lang.Class({
         this.actor.add_action(action);
     },
 
+    _keyFocusIn: function(actor) {
+        Util.ensureActorVisibleInScrollView(this.actor, actor);
+    },
+
     createFolderIcon: function(size) {
         let layout = new Clutter.TableLayout();
         let icon = new St.Widget({ layout_manager: layout,